<!DOCTYPE html>
<html>
    
<head>
    <meta charset="utf-8">
    
    <title>ApocalypseBlog</title>
    <canvas id="header_canvas"style="position:absolute;bottom:0"></canvas> 
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">

    

    

    

    

    
<link rel="stylesheet" href="/dist/build.css?v=1.14.0.css">

    <script src="/javascripts/bubble.js"></script>
    <script>
        window.isPost = false
        window.aomori = {
            
            
        }
        window.aomori_logo_typed_animated = false
        window.aomori_search_algolia = false

    </script>
<script>
    ((window.gitter = {}).chat = {}).options = {
      room: 'ApocalypseBlog/Apocalypse'
    };
  </script>
  <script src="https://sidecar.gitter.im/dist/sidecar.v1.js" async defer></script>
<meta name="generator" content="Hexo 5.3.0"></head>
<!--DaoVoice服务http://blog.daovoice.io/-->

    <script>(function (i, s, o, g, r, a, m) {
        i['DaoVoiceObject'] = r;
        i[r] = i[r] ||
          function () {
            (i[r].q = i[r].q || []).push(arguments);
          };
        i[r].l = 1 * new Date();
        a = s.createElement(o);
        m = s.getElementsByTagName(o)[0];
        a.async = 1;
        a.src = g;
        a.charset = 'utf-8';
        m.parentNode.insertBefore(a, m);
      })(window, document, 'script', ('https:' === document.location.protocol ? 'https:' : 'http:') + "//widget.daovoice.io/widget/b00f5052.js", 'daovoice');
      daovoice('init', {
        app_id: "b00f5052",
      });
      daovoice('update');
    </script>
  
<body>

    <div class="container">
    <header class="header">
        <div class="header-type">
            
            <div class="header-type-inner">
                
                    <a class="header-type-title" href="/">ApocalypseBlog</a>
                
    
                
            </div>
        </div>
        <div class="header-menu">
            <div class="header-menu-inner">
                
            </div>
            <div class="header-menu-social">
                
            </div>
        </div>

        <div class="header-menu-mobile">
            <div class="header-menu-mobile-inner" id="mobile-menu-open">
                <i class="icon icon-menu"></i>
            </div>
        </div>
    </header>

    <div class="header-menu-mobile-menu">
        <div class="header-menu-mobile-menu-bg"></div>
        <div class="header-menu-mobile-menu-wrap">
            <div class="header-menu-mobile-menu-inner">
                <div class="header-menu-mobile-menu-close" id="mobile-menu-close">
                    <i class="icon icon-cross"></i>
                </div>
                <div class="header-menu-mobile-menu-list">
                    
                </div>
            </div>
        </div>
    </div>

</div>

    <div class="container">
        <div class="main">
            <section class="inner">
                <section class="inner-main">
                    <div class="index">
 
  
    
      <article
  id="post-一文彻底了解Android自定义控件2"
  class="article article-type-post"
>

  

  <div class="article-inner">
    

    <div class="article-body">
      <header class="article-title">
        <a href="/2020/06/12/%E4%B8%80%E6%96%87%E5%BD%BB%E5%BA%95%E4%BA%86%E8%A7%A3Android%E8%87%AA%E5%AE%9A%E4%B9%89%E6%8E%A7%E4%BB%B62/">一文彻底了解Android自定义控件2</a>
      </header>
      <div class="article-entry post-inner-html">
        
          <p>经过前面对Android自定义控件初步了解以后，我们接下来就在前面的基础上更加深入了解所谓的Android自定义控件！</p>
<h3 id="AndroidView体系"><a href="#AndroidView体系" class="headerlink" title="AndroidView体系"></a>AndroidView体系</h3><p>在学习自定义控件之前，我们先了解一下Android的View体系</p>
        
      </div>
    </div>

    

  </div>

  <footer class="article-footer">
    <div class="article-more-info">
      <div class="article-date">
  <time datetime="2020-06-11T21:37:19.000Z" itemprop="datePublished">2020-06-12</time>
</div>
      
      
    </div>
  </footer>

</article>

    
  
    
      <article
  id="post-一文彻底了解Android自定义控件1"
  class="article article-type-post"
>

  

  <div class="article-inner">
    

    <div class="article-body">
      <header class="article-title">
        <a href="/2020/06/12/%E4%B8%80%E6%96%87%E5%BD%BB%E5%BA%95%E4%BA%86%E8%A7%A3Android%E8%87%AA%E5%AE%9A%E4%B9%89%E6%8E%A7%E4%BB%B61/">一文彻底了解Android自定义控件1</a>
      </header>
      <div class="article-entry post-inner-html">
        
          <h3 id="AndroidView体系"><a href="#AndroidView体系" class="headerlink" title="AndroidView体系"></a>AndroidView体系</h3><p>了解android的View体系，才知道后面我们步骤写Android自定义控件做准备。</p>
<p>要明白<code>View</code>和<code>ViewGroup</code>。</p>
<p>要能判断常用的控件是属于<code>View</code>还是<code>ViewGrop</code>，接着才有自己要写的控件属于<code>View</code>还是<code>ViewGroup</code>。</p>
<p>为什么呢？</p>
<p>因为自定义<code>View</code>跟自定义<code>ViewGroup</code>的步骤，套路不一样。</p>
        
      </div>
    </div>

    

  </div>

  <footer class="article-footer">
    <div class="article-more-info">
      <div class="article-date">
  <time datetime="2020-06-11T21:37:09.000Z" itemprop="datePublished">2020-06-12</time>
</div>
      
      
    </div>
  </footer>

</article>

    
  
    
      <article
  id="post-Android-复杂的列表视图新写法-MultiType"
  class="article article-type-post"
>

  

  <div class="article-inner">
    

    <div class="article-body">
      <header class="article-title">
        <a href="/2020/06/12/Android-%E5%A4%8D%E6%9D%82%E7%9A%84%E5%88%97%E8%A1%A8%E8%A7%86%E5%9B%BE%E6%96%B0%E5%86%99%E6%B3%95-MultiType/">Android 复杂的列表视图新写法 MultiType</a>
      </header>
      <div class="article-entry post-inner-html">
        
          <h1 id="Android-复杂的列视图新写法-MultiType"><a href="#Android-复杂的列视图新写法-MultiType" class="headerlink" title="Android 复杂的列视图新写法 MultiType"></a>Android 复杂的列视图新写法 MultiType</h1><h1 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h1><p>在开发我的 <strong><a target="_blank" rel="noopener" href="https://github.com/drakeet/TimeMachine">TimeMachine</a></strong> 时，我有一个复杂的聊天页面，于是我设计了我的类型池系统，它是完全解耦的，因此我能够轻松将它抽离出来分享，并给它取名为 <strong>MultiType</strong>.</p>
        
      </div>
    </div>

    

  </div>

  <footer class="article-footer">
    <div class="article-more-info">
      <div class="article-date">
  <time datetime="2020-06-11T19:57:58.000Z" itemprop="datePublished">2020-06-12</time>
</div>
      
      
    </div>
  </footer>

</article>

    
  
    
      <article
  id="post-从0到1教你搭建前端团队的组件系统（高级进阶必备）"
  class="article article-type-post"
>

  

  <div class="article-inner">
    

    <div class="article-body">
      <header class="article-title">
        <a href="/2020/06/11/%E4%BB%8E0%E5%88%B01%E6%95%99%E4%BD%A0%E6%90%AD%E5%BB%BA%E5%89%8D%E7%AB%AF%E5%9B%A2%E9%98%9F%E7%9A%84%E7%BB%84%E4%BB%B6%E7%B3%BB%E7%BB%9F%EF%BC%88%E9%AB%98%E7%BA%A7%E8%BF%9B%E9%98%B6%E5%BF%85%E5%A4%87%EF%BC%89/">从0到1教你搭建前端团队的组件系统（高级进阶必备）</a>
      </header>
      <div class="article-entry post-inner-html">
        
          <h2 id="前言"><a href="#前言" class="headerlink" title="前言"></a>前言</h2><p>随着vue/react这类以数据驱动为主的web框架的不断完善和壮大，越来越多的前端团队开始着手搭建内部的组件库。虽然目前市面上已经有很多功能强大且完善的组件库供我们使用，比如基于react的开源组件库ant-design，material，又比如基于vue的开源组件库elementUI，iView等。</p>
        
      </div>
    </div>

    

  </div>

  <footer class="article-footer">
    <div class="article-more-info">
      <div class="article-date">
  <time datetime="2020-06-11T04:57:45.000Z" itemprop="datePublished">2020-06-11</time>
</div>
      
      
    </div>
  </footer>

</article>

    
  
    
      <article
  id="post-Handler-机制"
  class="article article-type-post"
>

  

  <div class="article-inner">
    

    <div class="article-body">
      <header class="article-title">
        <a href="/2020/06/09/Handler-%E6%9C%BA%E5%88%B6/">Handler 机制</a>
      </header>
      <div class="article-entry post-inner-html">
        
          <h1 id="面试官：“看你简历上写熟悉-Handler-机制，那聊聊-IdleHandler-吧？”"><a href="#面试官：“看你简历上写熟悉-Handler-机制，那聊聊-IdleHandler-吧？”" class="headerlink" title="面试官：“看你简历上写熟悉 Handler 机制，那聊聊 IdleHandler 吧？”"></a>面试官：“看你简历上写熟悉 Handler 机制，那聊聊 IdleHandler 吧？”</h1>
        
      </div>
    </div>

    

  </div>

  <footer class="article-footer">
    <div class="article-more-info">
      <div class="article-date">
  <time datetime="2020-06-09T02:19:36.000Z" itemprop="datePublished">2020-06-09</time>
</div>
      
      
    </div>
  </footer>

</article>

    
  
    
      <article
  id="post-【Flutter高级玩法】贝塞尔曲线的表象认知"
  class="article article-type-post"
>

  

  <div class="article-inner">
    

    <div class="article-body">
      <header class="article-title">
        <a href="/2020/06/08/%E3%80%90Flutter%E9%AB%98%E7%BA%A7%E7%8E%A9%E6%B3%95%E3%80%91%E8%B4%9D%E5%A1%9E%E5%B0%94%E6%9B%B2%E7%BA%BF%E7%9A%84%E8%A1%A8%E8%B1%A1%E8%AE%A4%E7%9F%A5/">Flutter高级玩法-贝塞尔曲线的表象认知</a>
      </header>
      <div class="article-entry post-inner-html">
        
          <table>
<thead>
<tr>
<th>–</th>
<th>–</th>
</tr>
</thead>
<tbody><tr>
<td><img src="http://gank.io/images/647eaa29f2f14d26b7bf42d9875ffc2a" alt="img"></td>
<td><img src="http://gank.io/images/8f21d55dce424b1da3dc25bbc3f7bc47" alt="img"></td>
</tr>
<tr>
<td><img src="http://gank.io/images/79740d4480c34df9b73f102821a9ee19" alt="img"></td>
<td><img src="http://gank.io/images/9246c62fe76a447a8b115979b98cbfbc" alt="img"></td>
</tr>
</tbody></table>
<hr>
<blockquote>
<p>在玩贝塞尔之前先做点准备活动热热身。打个网格对学习贝塞尔曲线是很有帮助的。如下是以中心为原点的坐标系，<code>x向右</code>，<code>y向下</code></p>
</blockquote>
<p><img src="http://gank.io/images/0e0a93a14967429aaf7acd9372126edf" alt="img"></p>
        
      </div>
    </div>

    

  </div>

  <footer class="article-footer">
    <div class="article-more-info">
      <div class="article-date">
  <time datetime="2020-06-08T01:38:19.000Z" itemprop="datePublished">2020-06-08</time>
</div>
      
      
    </div>
  </footer>

</article>

    
  
    
      <article
  id="post-hexo撰写文章"
  class="article article-type-post"
>

  

  <div class="article-inner">
    

    <div class="article-body">
      <header class="article-title">
        <a href="/2020/06/06/hexo%E6%92%B0%E5%86%99%E6%96%87%E7%AB%A0/">hexo撰写文章</a>
      </header>
      <div class="article-entry post-inner-html">
        
          <p>在利用 Hexo 框架搭建一个属于我们自己的博客网站后，下面我们就来谈谈怎样在网站上书写我们的第一篇博客吧</p>
        
      </div>
    </div>

    

  </div>

  <footer class="article-footer">
    <div class="article-more-info">
      <div class="article-date">
  <time datetime="2020-06-05T16:37:27.000Z" itemprop="datePublished">2020-06-06</time>
</div>
      
      
    </div>
  </footer>

</article>

    
  
    
      <article
  id="post-快速入门-Kotlin"
  class="article article-type-post"
>

  

  <div class="article-inner">
    

    <div class="article-body">
      <header class="article-title">
        <a href="/2020/03/14/%E5%BF%AB%E9%80%9F%E5%85%A5%E9%97%A8-Kotlin/">快速入门 Kotlin</a>
      </header>
      <div class="article-entry post-inner-html">
        
          <h2 id="1-变量与函数"><a href="#1-变量与函数" class="headerlink" title="1.变量与函数"></a>1.变量与函数</h2><ul>
<li>val：用于声明不可变的变量，这种变量在初始赋值之后就再也不能重新赋值，对应 <code>Java</code> 中的 <code>final</code> 变量。</li>
<li>var：用于声明一个可变的变量，这种变量在初始赋值之后仍然可以再被重新赋值，对应 <code>Java</code> 中的非 <code>final</code> 变量。</li>
</ul>
        
      </div>
    </div>

    

  </div>

  <footer class="article-footer">
    <div class="article-more-info">
      <div class="article-date">
  <time datetime="2020-03-13T18:08:20.000Z" itemprop="datePublished">2020-03-14</time>
</div>
      
      
    </div>
  </footer>

</article>

    
  

  
    <nav class="pagination">
        <a class="extend prev" rel="prev" href="/page/3/">Prev</a><a class="page-number" href="/">1</a><a class="page-number" href="/page/2/">2</a><a class="page-number" href="/page/3/">3</a><span class="page-number current">4</span>
    </nav>
  
  
</div>


                </section>
            </section>

             
            <aside class="sidebar">
            
                
            </aside>
        </div>
    </div>

    <footer class="footer">
    <div class="footer-wave">
        <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1440 320"><path fill="#3c4859" fill-opacity="1" d="M0,160L60,181.3C120,203,240,245,360,240C480,235,600,181,720,186.7C840,192,960,256,1080,261.3C1200,267,1320,213,1380,186.7L1440,160L1440,320L1380,320C1320,320,1200,320,1080,320C960,320,840,320,720,320C600,320,480,320,360,320C240,320,120,320,60,320L0,320Z"></path></svg>
    </div>

    <div class="footer-wrap">
        <div class="footer-inner"> 
            ApocalypseBlog &copy; 2021<br>
            Powered By Hexo · Theme By <a href="https://github.com/lh1me/hexo-theme-aomori" target="_blank">Aomori</a>
        </div>
    </div>

</footer>




<script src="/dist/build.js?1.14.0.js"></script>


<script src="/dist/custom.js?1.14.0.js"></script>









</body>

</html>